package com.project.mapper;

import com.github.pagehelper.PageInfo;
import com.project.bean.RoomBean;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper
public interface IRoomMapper {
    /**
     * 根据性别查询可住房间（已住人数 < 可住人数）
     *
     * @param gender 性别
     * @return 房间集合；
     * 房间信息：房间编号、房间地址
     */

    public List<RoomBean> findByGender(String gender);

    /**
     * 动态条件分页查询房间信息，同时统计每个房间的已住人数（外联接）
     *
     * @param address    房间地址
     * @param status     房间状态
     * @param canIn      是否可住
     * @param roomGender 类型
     * @return 房间对象
     * 房间信息：房间id、房间地址、可容纳人数、已住人数、房间状态、房间类型
     */
    public List<RoomBean> findByItem(@Param("address") String address, @Param("status") String status,
                                     @Param("canIn") String canIn, @Param("roomGender") String roomGender);

    /**
     * 完成房间信息的添加
     *
     * @param room 房间对象（房间地址、可容纳人数、房间类型）
     */
    @Insert("insert into t_room (r_address,r_canNum,r_status,r_type)" +
            "values (#{roomAddress},#{roomCanInNum},#{roomStatus},#{roomGender})")
    public void addRoom(RoomBean room);

    /**
     * 按房间的id删除对应的设施记录，再完成房间的删除，返回true
     *
     * @param roomId 房间id
     */

    @Delete("delete from t_room where pk_roomId = #{id}")
    public void delRoom(Integer roomId);

    /**
     * 按房间的id查询房间的信息，同时统计房间的已住人数。
     * 按房间的id查询该房间所住学生的信息，同时查询学生所在的班级名称
     *
     * @param roomId 房间id
     * @return 房间对象
     * 房间信息：房间id、房间地址、可容纳人数、已住人数、房间状态、房间类型
     * 学生信息：学生id、姓名、班级名称、电话
     */
    public RoomBean findById(Integer roomId);

    /**
     * 将房间状态修改为“正常”或“设施损坏”
     *
     * @param id 房间id
     */
    @Update("Update t_room set r_status = #{status} where pk_roomId = #{id}")
    public void updateStatusById(@Param("id") Integer id, @Param("status") String status);

}
